As the art of computer graphics has grown in sophistication, uses being made of computer graphics display systems have become increasingly various and creative. For example, in many modern applications, several display systems are employed at once to provide a larger viewing area than could be provided by a single display system operating alone. One such application is known popularly as a "virtual reality theater." In a typical virtual reality theater, multiple computer graphics display systems are used to project images on each of the walls of a room so that an observer within the room can see the images no matter in which direction he or she looks or moves. Often, the presentation of the images changes depending on the observer's position or orientation within the room as indicated by a tracking device. Other types of virtual reality theaters use multiple monitors oriented around a relatively stationary observer. The latter types of virtual reality theaters are frequently used, for example, in flight simulators. In advanced applications, stereoscopic display techniques are sometimes employed. In stereoscopic applications, left- and right-eye views are alternately displayed while special eyewear worn by the observer alternately occludes the right and left fields of vision. When the eyewear and the display system are synchronized properly, the observer is given the experience of having depth perception (i.e. "3D vision") while viewing the displayed scene.
Whether or not stereoscopic techniques are employed, special problems must be solved before using multi-display systems effectively in any of the above environments. One such special problem is that of synchronizing frame buffer swapping among the multiple display systems used to produce the images.
By way of background, a typical computer graphics "pipeline" 100 is depicted in FIG. 1. A host computer system 110 runs system and application software that is capable of modeling a scene in terms of polygon vertices, color, lighting, textures and so on. Host computer system 110 sends this information to graphics acceleration system 112. Graphics acceleration system 112 renders the modeled scene by generating pixel data for storage in a frame buffer memory. The contents of the frame buffer memory are continually read by a random access memory/digital-to-analog converter ("RAMDAC") module 122 which typically contains color or gamma correction lookup tables and drives a display monitor 124. In lower-end applications in which graphics acceleration system 112 is not present, host computer system 110 may generate the pixel data itself and write the pixel data into the frame buffer directly.
Also common is to use a technique known as double buffering. In double buffering, two frame buffers 116 and 118 are provided instead of a single frame buffer. In this manner, host computer system 110 or graphics acceleration system 112 can write pixel data into one frame buffer (the "non-viewable" or "back" buffer) while RAMDAC module 122 and monitor 124 display pixel data previously written into the other frame buffer (the "viewable" or "front" buffer). The effect of this technique is to reduce tearing and other unwanted visual artifacts that are introduced into an image when the contents of a frame buffer are changed while the contents of the same frame buffer are being displayed. In systems that use two buffers, it is known to use a frame buffer controller 114 to coordinate which buffer will be viewable and which will be non-viewable at any given moment. Specifically, a swap controller 120 within frame buffer controller 114 indicates when it is safe to stop displaying the contents of one frame buffer and to start displaying the contents of the other frame buffer. Typically, swap controller 120 will indicate that it is safe to swap frame buffers at the moment when (1) the graphics pipeline has finished rendering pixel data into the non-viewable buffer, and (2) the current raster position of the display is not within the window of interest. (In full-screen graphics, buffer swapping would normally occur only during a vertical retrace. In windowed graphics, however, buffer swapping might occur at any time when the raster is not within the window of interest.)
Although prior art frame buffer controller 114 and swap controller 120 are effective for timing the swapping of frame buffers 1 16 and 118 in a single computer graphics pipeline 100, they do not provide any mechanism for synchronizing the swapping of frame buffers among all of the graphics pipelines used in multi-pipeline display systems such as those described above. Therefore, discontinuities may be seen in the images produced by multi-pipeline display systems that use prior art frame buffer controllers 114 and swap controllers 120. This is because the various computer graphics pipelines in the multi-display system may swap buffers at different times if the complexities of the frames to be rendered differ significantly from one pipeline to another. This effect is especially noticeable, for example, if the pipelines are each displaying different parts of the same object. The unwanted visual effects caused by this lack of synchronization can be even more apparent when stereoscopic techniques are in use.
It is therefore an object of the present invention to provide a method and apparatus for synchronizing the swapping of frame buffers among all of the computer graphics pipelines in a multi-pipeline computer graphics display system.